package com.gitee.zycra.future.job.common.util;

import lombok.extern.slf4j.Slf4j;

import java.io.File;

/**
 * @author zycra
 */
@Slf4j
public final class AESUtil extends SymmetricEncryptUtil {

    private AESUtil() {
    }

    /**
     * AES加密
     *
     * @param content  待加密内容
     * @param password 加密密码
     * @return 加密后字符串
     */
    public static String encrypt(String content, String password) {
        return encrypt(content, password, SymmetricEncryptUtil.AES_LABEL);
    }

    /**
     * AES解密
     *
     * @param content  待解密内容
     * @param password 解密密码
     * @return 解密后字符串
     */
    public static String decrypt(String content, String password) {
        return decrypt(content, password, SymmetricEncryptUtil.AES_LABEL);
    }

    /**
     * AES加密文件
     *
     * @param originFile  原文件
     * @param encryptFile 加密后的文件
     * @param password    密码
     * @return 是否成功
     */
    public static boolean encrypt(File originFile, File encryptFile, String password) {
        return encrypt(originFile, encryptFile, password, SymmetricEncryptUtil.AES_LABEL);
    }

    /**
     * AES解密文件
     *
     * @param originFile  原文件
     * @param decryptFile 解密后的文件
     * @param password    密码
     * @return 是否成功
     */
    public static boolean decrypt(File originFile, File decryptFile, String password) {
        return decrypt(originFile, decryptFile, password, SymmetricEncryptUtil.AES_LABEL);
    }

    /**
     * 生成AES密钥
     *
     * @return AES密钥
     */
    public static String generateKey() {
        return generateKey(SymmetricEncryptUtil.AES_LABEL);
    }
}
